package ve.edu.ucla.laboratorio.dals.actividades;

import ve.edu.ucla.laboratorio.dals.R;
import ve.edu.ucla.laboratorio.dals.Utilidades;
import ve.edu.ucla.laboratorio.dals.modelo.Autenticacion;
import ve.edu.ucla.laboratorio.dals.modelo.EstadoAutenticacion;
import ve.edu.ucla.laboratorio.dals.modelo.Preferencias;
import ve.edu.ucla.laboratorio.dals.modelo.RepositorioDatos;
import ve.edu.ucla.laboratorio.dals.modelo.RepositorioUsuarios;
import android.app.Activity;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class Logueo extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		Preferencias preferencias = new Preferencias(this);
		final RepositorioDatos datos = Utilidades.crearRepositorioDatos(preferencias, this);
		
		final RepositorioUsuarios repositorio = datos.nuevoRepositorioUsuarios();

		Autenticacion autenticacion = Autenticacion.estadoActual(repositorio, preferencias);
		if (autenticacion.getEstado() == EstadoAutenticacion.VALIDO) {
			Principal.iniciar(Logueo.this, autenticacion);
			return;
		}

		setContentView(R.layout.inicio_sesion);

		final Button btnLogueo = (Button) findViewById(R.id.btnLogueo);
		btnLogueo.setOnClickListener(
				new View.OnClickListener() {
					public void onClick(View v) {
						String nombre = Utilidades.obtenerTexto(Logueo.this,
								R.id.textoUsuario);
						String clave = Utilidades.obtenerTexto(Logueo.this,
								R.id.textoClave);

						Autenticacion autenticacion = Autenticacion.autenticar(
								repositorio, nombre, clave);
						if (autenticacion.getEstado() == EstadoAutenticacion.VALIDO) {
							Principal.iniciar(Logueo.this, autenticacion);
						} else {
							Utilidades.mostrarMensaje(Logueo.this,
									getString(R.string.datos_autenticacion_incorrecta));
						}
					}
				});

		findViewById(R.id.btnRastrearCarga).setOnClickListener(
				new View.OnClickListener() {
					public void onClick(View v) {
						Utilidades.iniciarActividad(Logueo.this,
								RastreoGeneral.class);
					}
				});
		
		EditText txtClave = (EditText) findViewById(R.id.textoClave);
		txtClave.setOnEditorActionListener(
				new OnEditorActionListener() {
					public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
						if (actionId == EditorInfo.IME_ACTION_DONE ||
								(event.getAction() == KeyEvent.ACTION_DOWN) &&
						        (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
							btnLogueo.requestFocus();
						    return true;
						}
						return false;
					}
				});

		TextView t2 = (TextView) findViewById(R.id.etiqMasInformacion);
		t2.setMovementMethod(LinkMovementMethod.getInstance());
	}
	
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.logueo, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.configuracion:
        	Configuracion.iniciar(this, null);
        	return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
    
	public static void iniciar(Activity actividad) {
		Utilidades.iniciarActividad(actividad, Logueo.class);
	}
}